package DAOs;

import java.io.IOException;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.List;

import Configuracoes.PadraoSeparacaoStrings;
import Excecoes.ExececaoCategoriaVendedorIncorreta;
import LeituraPersistencia.GravarDadosArquivoTxt;
import LeituraPersistencia.ObterDadosArquivoTxt;
import Utils.FiltraStrings;

public abstract class DAOItem {
	private List<String> dados;
	private List<String[]> dadosFiltadros;
	
	public DAOItem() {
	}

	public void recupera(String caminhoArquivoTexto) throws IOException, ParseException, ExececaoCategoriaVendedorIncorreta{
		dados = new ArrayList<String>();
		ObterDadosArquivoTxt leitor = new ObterDadosArquivoTxt(caminhoArquivoTexto);
		dados = leitor.obterDados();
		dadosFiltadros = new ArrayList<String[]>();
		dadosFiltadros = FiltraStrings.filtra(dados, PadraoSeparacaoStrings.padrao);
		criaItens(dadosFiltadros);
	}
	
	public void atualiza(String caminhoArquivoTexto) throws IOException, ParseException, ExececaoCategoriaVendedorIncorreta{
		recupera(caminhoArquivoTexto);
		GravarDadosArquivoTxt gravador = new GravarDadosArquivoTxt(dadosFiltadros, caminhoArquivoTexto);
		gravador.gravarDados();
	}
	
	protected abstract void criaItens(List<String[]> dadosFiltadros) throws ParseException, ExececaoCategoriaVendedorIncorreta;
}
